home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 September
/
CHIP 1996 szeptember (CD07).zip
/
CHIP_CD07.ISO
/
sac
/
pack
/
rar200sl.exe
/
rar
/
TECHNOTE.DOC
< prev
next >
Wrap
Text File
|
1996-05-24
|
10KB
|
360 lines
██████╗ █████╗ ██████╗
██╔══██╗ ██╔══██╗ ██╔══██╗ RAR verzia 2.00 - Technické informácie
██████╔╝ ███████║ ██████╔╝ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
██╔══██╗ ██╔══██║ ██╔══██╗
██║ ██║ ██║ ██║ ██║ ██║
╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
┌─────────────────────────────────────────────────────────────────────┐
│TU POPISOVANφ FORM╡T ARCH╓VU JE PLATNφ LEN PRE VERZIE NOVµIE AKO 1.50│
└─────────────────────────────────────────────────────────────────────┘
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Súborov∞ formát archívu RARu ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
Archívny súbor sa skladá z blokov premenlivej dƺky. Poradie t∞chto
blokov môºe by£ rôzne, ale prv∞ blok musí by£ znaƒkov∞ blok nasledovan∞
blokom hlaviƒky archívu.
Kaºd∞ blok zaƒína nasledujúcimi poûami:
HEAD_CRC 2 bajty CRC celého bloku alebo ƒasti bloku
HEAD_TYPE 1 bajt Typ bloku
HEAD_FLAGS 2 bajty Príznaky bloku
HEAD_SIZE 2 bajty Veûkos£ bloku
ADD_SIZE 4 bajty Voliteûné pole - veûkos£ pridaného bloku
Pole ADD_SIZE je prítomné len ak (HEAD_FLAGS & 0x8000) != 0
Celková veûkos£ bloku je HEAD_SIZE ak (HEAD_FLAGS & 0x8000) == 0
a HEAD_SIZE+ADD_SIZE ak je pole ADD_SIZE prítomné - ke╘
(HEAD_FLAGS & 0x8000) != 0.
V kaºdom bloku nasledujúce bity v HEAD_FLAGS majú spoloƒn∞ v∞znam:
0x4000 - ak nastaven∞, starτie verzie RARu ignorujú tento blok
a odstránia ho pri aktualizácii archívu.
ak nulov∞, blok je kopírovan∞ do nového archívneho súboru
pri aktualizácii archívu;
0x8000 - ak nastaven∞, pole ADD_SIZE je prítomné a celková veûkos£ bloku
je HEAD_SIZE+ADD_SIZE.
Deklarované typy blokov:
HEAD_TYPE=0x72 znaƒkov∞ blok
HEAD_TYPE=0x73 hlaviƒka archívu
HEAD_TYPE=0x74 hlaviƒka súboru
HEAD_TYPE=0x75 hlaviƒka komentára
HEAD_TYPE=0x76 extra informácia
HEAD_TYPE=0x77 podblok
HEAD_TYPE=0x78 záchrann∞ záznam
Komentárov∞ blok je momentálne pouºívan∞ len v in∞ch blokoch a nevyskytuje
sa samostatne.
Archív sa spracováva nasledujúcim spôsobom:
1. Preƒíta a skontroluje sa znaƒkov∞ blok
2. Preƒíta sa hlaviƒka archívu
3. Preƒítajú alebo vynechajú sa bajty HEAD_SIZE-veûkos£(MAIN_HEAD)
4. Ak nastal koniec archívu, spracuje sa ukonƒenie archívu, ináƒ
sa naƒíta 7 bajtov do polí HEAD_CRC, HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE.
5. Testuje sa HEAD_TYPE.
V prípade, ºe je potrebné ƒíta£ blok:
ak HEAD_TYPE==0x74
preƒíta sa hlaviƒka súboru ( prv∞ch 7 bajtov je uº preƒítan∞ch )
preƒíta alebo vynechá sa HEAD_SIZE-veûkos£(FILE_HEAD) bajtov
preƒíta alebo vynechá sa FILE_SIZE bajtov
ináƒ
preƒíta sa zodpovedajúci blok HEAD_TYPE:
preĒta sa HEAD_SIZE-7 bajtov
ak (HEAD_FLAGS & 0x8000)
preĒta sa ADD_SIZE bajtov
V prípade, ºe je potrebné vynecha£ blok:
vynechá sa HEAD_SIZE-7 bajtov
ak (HEAD_FLAGS & 0x8000)
vynechá sa ADD_SIZE bajtov
6. pokraƒuje sa bodom 4.
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Formáty blokov ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
Znaƒkov∞ blok ( MARK_HEAD )
HEAD_CRC Vºdy 0x6152
2 bajty
HEAD_TYPE Typ hlaviƒky: 0x72
1 bajt
HEAD_FLAGS Vºdy 0x1a21
2 bajty
HEAD_SIZE Veûkos£ bloku = 0x0007
2 bajty
Znaƒkov∞ blok je momentálne reprezentovan∞ pevnou sekvenciou
bajtov: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
Hlaviƒka archívu ( MAIN_HEAD )
HEAD_CRC CRC polí HEAD_TYPE aº RESERVED2
2 bajty
HEAD_TYPE Typ hlaviƒky: 0x73
1 bajt
HEAD_FLAGS Bitové príznaky:
2 bajty
0x01 - Atribút zväzku (archívny zväzok)
0x02 - Prítomnos£ archívneho komentára
0x04 - Atribút uzamknutia archívu
0x08 - Solid atribút (solid archív)
0x10 - Nepouºité
0x20 - Prítomnos£ AV informácie
zvyτné bity v HEAD_FLAGS sú rezervované pre
interné pouºitie
HEAD_SIZE Celková veûkos£ hlaviƒky archívu vƒetne archívnych komentárov
2 bajty
RESERVED1 Rezervované
2 bajty
RESERVED2 Rezervované
4 bajty
Komentárov∞ blok je prítomn∞ ak (HEAD_FLAGS & 0x02) != 0
Hlaviƒka súboru (Súboru v archíve)
HEAD_CRC CRC polí HEAD_TYPE aº FILEATTR
2 bajty a názvu súboru
HEAD_TYPE Typ hlaviƒky: 0x74
1 bajt
HEAD_FLAGS Bitové príznaky:
2 bajty
0x01 - súbor pokraƒuje z predchádzajúceho zväzku
0x02 - súbor pokraƒuje na nasledujúcom zväzku
0x04 - súbor je zakryptovan∞ pomocou hesla
0x08 - prítomn∞ komentár súboru
0x10 - je pouºitá informácia z predchádzajúcich súborov
(solid príznak) (pre RAR 2.0 a novτie)
bity 7 6 5 (pre RAR 2.0 a novτie)
0 0 0 - veûkos£ slovníka 64 kB
0 0 1 - veûkos£ slovníka 128 kB
0 1 0 - veûkos£ slovníka 256 kB
0 1 1 - veûkos£ slovníka 512 kB
1 0 0 - veûkos£ slovníka 1024 kB
1 0 1 - rezervované
1 1 0 - rezervované
1 1 1 - súbor je adresár
(HEAD_FLAGS & 0x8000) == 1, pretoºe úplná
veûkos£ bloku je HEAD_SIZE + PACK_SIZE
HEAD_SIZE Celková veûkos£ hlaviƒku súboru vƒetne názvu súboru
2 bajty a komentárov
PACK_SIZE Veûkos£ súboru po kompresii
4 bajty
UNP_SIZE Veûkos£ súboru po rozbalení
4 bajty
HOST_OS Operaƒn∞ systém pouºit∞ pre archiváciu
1 bajt 0 - MS DOS
1 - OS/2
2 - Win32
3 - Unix
FILE_CRC CRC súboru
4 bajty
FTIME Dátum a ƒas v τtandardnom MS DOS formáte
4 bajty
UNP_VER Verzia RARu potrebná na extrakciu súboru
1 bajt
METHOD Metóda kompresie
1 bajt
NAME_SIZE Dƺka názvu súboru
2 bajty
ATTR Atribúty súboru
4 bajty
FILE_NAME Názov súboru - re£azec o dƺke NAME_SIZE bajtov
Komentárov∞ blok je prítomn∞ ak (HEAD_FLAGS & 0x08) != 0
Komentárov∞ blok
HEAD_CRC CRC polí HEAD_TYPE aº COMM_CRC
2 bajty
HEAD_TYPE Typ hlaviƒky: 0x75
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
HEAD_SIZE Veûkos£ hlaviƒky komentára + veûkos£ komentára
2 bajty
UNP_SIZE Veûkos£ komentáru po rozbalení
2 bajty
UNP_VER Verzia RARu potrebná na extrakciu komentára
1 bajt
METHOD Metóda kompresie
1 bajt
COMM_CRC CRC komentára
2 bajty
COMMENT Text komentára
Blok extra informácie
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlaviƒky: 0x76
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
HEAD_SIZE Celková veûkos£ bloku
2 bajty
INFO Iné dáta
Podblok
Po objekte v archíve (blok alebo hlaviƒka) môºe nasledova£ podblok.
Podblok je závisl∞ na hlavnom objekte. Podblok môºe by£ vymazan∞
alebo prenesen∞ do novej verzie archívu, ak je archív aktualizovan∞.
Podblok obsahuje nasledujúce polia:
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlaviƒky: 0x77
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
(HEAD_FLAGS & 0x8000) == 1, pretoºe úplná
veûkos£ bloku je HEAD_SIZE + DATA_SIZE
HEAD_SIZE Celková veûkos£ bloku
2 bajty
DATA_SIZE Celková veûkos£ dát
4 bajty
SUB_TYPE Typ podbloku
2 bajty
RESERVED Musí by£ 0
1 bajt
Iné polia Iné polia v závislosti od typu podbloku
Podblok rozτíren∞ch atribútov OS/2
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlaviƒky: 0x77
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
(HEAD_FLAGS & 0x8000) == 1, pretoºe úplnáÆ
veûkos£ bloku je HEAD_SIZE + DATA_SIZE
HEAD_SIZE Celková veûkos£ bloku
2 bajty
DATA_SIZE Celková veûkos£ dát (veûkos£ skomprimovan∞ch rozτíren∞ch
4 bajty atribútov)
SUB_TYPE 0x100
2 bajty
RESERVED Musí by£ 0
1 bajt
UNP_SIZE veûkos£ rozτíren∞ch atribútov po rozbalení
4 bajty
UNP_VER Verzia RARu potrebná na extrakciu roτíren∞ch atribútov
1 bajt
METHOD Metóda kompresie
1 bajt
EA_CRC CRC rozτíren∞ch atribútov
4 bajty
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Applikaƒné poznámky ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
1. Pri spracovaní SFX archívu musíte vynecha£ SFX modul hûadaním
znaƒkového bloku v archíve. V samotnom SFX module sa nenachádza sekvencia
znaƒkového bloku (0x52 0x61 0x72 0x21 0x1a 0x07 0x00).
2. CRC je kalkulovan∞ pouºitím τtandardardného polynómu 0xEDB88320.
V prípade, ºe veûkos£ CRC je menτia ako 4 bajty, sú pouºité len dolné bajty.
3. Zakódovanie metódy kompresie:
0x30 - ukladanie
0x31 - najr∞chlejτia kompresia
0x32 - r∞chla kompresia
0x33 - normálna kompresia
0x34 - dobrá kompresia
0x35 - najlepτia kompresia
4. Verzia RARu potrebná na extrakciu je zakódovaná ako 10 * hlavné ƒíslo
verzie + minoritné ƒíslo verzie.